// 引入connect用于链接UI组件与redux
import {connect} from "react-redux"
import React, { Component } from 'react';
// 引入action
import {createIncrementAction, createDecrementAction, createIncrementAsyncAction} from '../../redux/count_actions'

class CountUI extends Component {

    increment = () => {
        // 加法
        const {value} = this.selectNumber
        this.props.jia(value * 1)
    }
    decrement = () => {
        // 减法
        const {value} = this.selectNumber
        this.props.jian(value * 1)
    }
    incrementIfOdd = () => {
        // 奇数加
        const {value} = this.selectNumber
        if (this.props.count % 2 !== 0){
            this.props.jia(value * 1)
        }
    }
    incrementAsync = () => {
        // 异步加
        const {value} = this.selectNumber
        this.props.jiaAsync(value * 1, 500)
    }
  
    render() {
        const {count} = this.props
        return (
            <div>
                <h1>当前求和为：{count}</h1>
                <select ref={c => this.selectNumber = c}>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                </select>&nbsp;
                <button onClick={this.increment}>+</button>&nbsp;
                <button onClick={this.decrement}>-</button>&nbsp;
                <button onClick={this.incrementIfOdd}>当前求和为奇数再加</button>&nbsp;
                <button onClick={this.incrementAsync}>异步加</button>
            </div>
        );
  }
}


// connect()()创建并暴露一个Count组件
export default connect(
    state => ({count:state}), 
    // mapDispatchToProps的一般写法
    /*dispatch => ({
            jia:(number)=>{
                // 通知redux执行加法
                dispatch(createIncrementAction(number))
            },
            jian:(number)=>{
                // 通知redux执行减法
                dispatch(createDecrementAction(number))
            },
            jiaAsync:(number, time)=>{
                // 通知redux异步执行加法
                dispatch(createIncrementAsyncAction(number, time))
            }, 
        }) */

    // mapDispatchToProps的简写
    {
        // 因为react-redux可以自动的进行分发
        jia:createIncrementAction,
        jian:createDecrementAction,
        jiaAsync:createIncrementAsyncAction,
    }
)(CountUI)

